
SRC = ./src
OBJ = ./obj
H_FLAG = ./src

tigerParser: $(OBJ)/parsetest.o $(OBJ)/tiger.tab.o $(OBJ)/tiger.yy.o $(OBJ)/errormsg.o $(OBJ)/util.o
	gcc -o tigerParser $(OBJ)/parsetest.o $(OBJ)/tiger.tab.o $(OBJ)/tiger.yy.o $(OBJ)/errormsg.o $(OBJ)/util.o

$(OBJ)/parsetest.o: $(SRC)/parsetest.c $(SRC)/errormsg.h $(SRC)/util.h
	gcc -c $(SRC)/parsetest.c -o $(OBJ)/parsetest.o -I $(H_FLAG)

$(OBJ)/tiger.tab.o: $(OBJ)/tiger.tab.c
	gcc -c $(OBJ)/tiger.tab.c -o $(OBJ)/tiger.tab.o -I $(H_FLAG)

$(OBJ)/tiger.yy.o: $(OBJ)/tiger.yy.c $(OBJ)/tiger.tab.h $(SRC)/errormsg.h $(SRC)/util.h
	gcc -c $(OBJ)/tiger.yy.c -o $(OBJ)/tiger.yy.o -I $(H_FLAG)

#Compiler yacc
$(OBJ)/tiger.tab.c: $(SRC)/tiger.yy
	bison --name-prefix=tiger -d -o $(OBJ)/tiger.tab.c $(SRC)/tiger.yy

#Compiler lex
$(OBJ)/tiger.yy.c: $(SRC)/tiger.lex
	lex --prefix=tiger -o $(OBJ)/tiger.yy.c $(SRC)/tiger.lex
$(SRC)/tiger.lex:

$(OBJ)/errormsg.o: $(SRC)/errormsg.c $(SRC)/errormsg.h $(SRC)/util.h
	gcc -c $(SRC)/errormsg.c -o $(OBJ)/errormsg.o -I $(H_FLAG)

$(OBJ)/util.o: $(SRC)/util.c $(SRC)/util.h
	gcc -g -c $(SRC)/util.c -o $(OBJ)/util.o -I $(H_FLAG)

clean: 
	rm -f ./obj/* tigerParser
